



//
//  UIImage+Category.m
//  runtime
//
//  Created by YYY on 2018/1/9.
//  Copyright © 2018年 YYY. All rights reserved.
//

#import "UIImage+Category.h"

@implementation UIImage (Category)

// 加载分类到内存的时候调用
+ (void)load
{
    // 交换方法
    // 获取imageWithName方法地址
    Method imageWithName = class_getClassMethod(self, @selector(imageWithName:));
    
    // 获取imageWithName方法地址
    Method imageName = class_getClassMethod(self, @selector(imageNamed:));
    
    // 交换方法地址，相当于交换实现方式
    method_exchangeImplementations(imageWithName, imageName);
}

// 不能在分类中重写系统方法imageNamed，因为会把系统的功能给覆盖掉，而且分类中不能调用super.
// 既能加载图片又能打印
+ (instancetype)imageWithName:(NSString *)name
{
    double version = [[UIDevice currentDevice].systemVersion doubleValue];
    if(version >=7.0)
    {
        // 如果系统版本是7.0以上，使用另外一套文件名结尾是‘_os7’的扁平化图片
        name = [name stringByAppendingString:@"_os7"];
    }
    return [UIImage imageWithName:name];
}

@end
